package com.test18.ratelimiter;

import com.google.common.util.concurrent.RateLimiter;

/**
 * 总结：
 *    1.RateLimiter主要是通过发放令牌的延迟性来达到每秒只能调用成功acquire()几次.
 */
public class RateLimiterDemo {
	public static void main(String[] args) {
		//定义一个每秒n个令牌的令牌桶
		RateLimiter create = RateLimiter.create(2);
		
		//定义一个循环，持续执行task()
		for (int i = 0; i < 10000; i++) {
			//每次执行都要先获取令牌，测试一秒会执行多少次task()
			long start = System.currentTimeMillis();
			create.acquire();
			long end = System.currentTimeMillis();
			System.out.println("本次获取令牌时间："+(end-start));
			
			
			
			task(i);
		}
	}
	public static void task(int id){
		System.out.println(id+":被执行");
	}
}
